// 传统阻塞 IO
// 读写分离
// 主线程负责获取客户端的连接, 文件信息管理
// work 线程接受文件
// file 文件的保存

#include <sys/types.h>
#include <sys/socket.h>
#include <sys/select.h>  // 多路复用 I/O

#include <arpa/inet.h>

#include <netinet/in.h>
#include <netinet/ip.h>

#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>

#include <math.h>

#include <vector>
#include <map>

#include <signal.h>


#include "qd_datas.h"
#include "qd_types.h"
#include "qd_utils.h"


#include "inc/SocketManager.h"

#include "inc/FileIO.h"
#include "inc/NetFileIO.h"

#include "inc/FileTask.h"

#include "inc/qd_env.h"

#include "inc/QDServices.h"

void handleSignal(int signal) {
    if (signal == SIGINT) {
        printf("Program Exit\n");
        close(3);
        exit(1);
    }
}
/*
    8848 main 端口
    8849 file 端口 --- 随机端口
*/

#define INI_PATH "qds.conf"

int main(int argc, char *argv[]) {

    int ret = 0;

    QDENV::CONFIG(INI_PATH);

    EndPoint svr(QDENV::IP, QDENV::PORT);

    svr.RegistServer();
    
    // #################
    /*获取客户端连接,并处理业务*/
    int count = 10;
    while(count--){
        EndPoint *cli =  svr.Accept();

        QDServices app;

        app.Request(cli->mFd);

        delete cli;
    }
    return 0;
}
